import UserService from "../../../dataservice/UserService"
import LevelService from "../../../dataservice/LevelService"
let userService = new UserService()
let levelService = new LevelService()
Page({
  data: {
    inited: true, //页面数据是否初始化完（防止打开页面有部分数据后台没返回导致页面乱）
    myInfo: {}, //我的个人信息(总步数和是否锁定)
    myLevel: {}, //我的等级（当前等级）
    nextLevel: {}, // 当前用户所属级别的下一个级别对象
    growthValueToNextLevel: -1, // 用户当前级别距离下一个等级相差的成长值(控制是否显示用户等级升级说明，小于0不显示)
    levels: [], //所有级别数组(在成长体系处循环显示所有可以升级的级别)
    selectedId: 0, // 当前的等级的id（成长体系处默认让当前等级的图标放大显示，点击成长体系每个图标动态设置id让放大显示）
    selectedLevel: {} // 用户当前选中查看的级别（对象）
  },
  onLoad: function (options) {
    const self = this
    // 获取表中所有分类级别
    levelService.getLevelist(levelList => {
      let levels = levelList
      //  查询个人信息(总步数和是否锁定)
      userService.getUserInfo(userInfo => {
        let user = userInfo
        // 设置用户当前对应的等级
        self.setLevelData(levels, user)
      })
    })
  },
  // 设置用户的等级
  setLevelData(levels, user) {
    // 我的级别
    let myLevel = levels.filter(item => {
      return (user.growthValue >= item.minGrowthValue && user.growthValue <= item.maxGrowthValue) || (user.growthValue>=item.minGrowthValue && item.maxGrowthValue===-1 )
    })[0]
    // console.log(myLevel)
    this.setData({
      myInfo: user,
      myLevel: myLevel,
      levels,
      selectedId: myLevel.id,
      selectedLevel: myLevel
    })

    /**
     *  获取当前级别的下一个级别
     * 根据比现在级别+1后的下一级别的id编号从级别数组中
     * 筛选得到下一级别的参数信息
     */
    const nextId = myLevel.id + 1
    let nextLevel = levels.filter(item => {
      return nextId === item.id
    })[0]
    // 如果是最大级别，它的下一级别就是undefined,最大级别就没有最大级别
    if (nextLevel !== undefined) {
      this.setData({
        nextLevel,
        //当前步数减去下一级别的最小步数就是距离下一级别还差多少步
        growthValueToNextLevel: nextLevel.minGrowthValue - user.growthValue
      })
    }
  },
  // 点击成长体系的每个图标,要达到对应等级需要多少经验提示显示
  onLevelItemClick(e) {
    let selectedLevel = e.currentTarget.dataset.item
    this.setData({
      selectedId: selectedLevel.id,
      selectedLevel: selectedLevel
    })
  }
})